#ifndef PID_CONTROLLER_H
#define PID_CONTROLLER_H
// 位置式 PID 控制器
struct PIDController {
    float Kp = 1.0f;/// 1.0f
    float kp = 0.045f; 
    float Ki = 0.0f;   
    float Kd = 2.0f;///

    float Kp_zhi = 0.0f;/// 1.0f
    float Kd_zhi = 0.0f; 
    float Kp_wan = 0.0f;   
    float Kd_wan = 0.0f;///

    float error = 0;    // 当前偏差
    float lastError = 0; // 上一次偏差
    float integral = 0;  // 积分项
    float derivative = 0;// 微分项
    float output = 0;   // PID输出值
    const float setPoint = 39.0f; // 期望值设为80
    const float integralLimit = 100.0f; // 积分限幅
    const float outputLimit = 150.0f;   // 输出限幅

    float calculate(float currentValue);  // PID计算函数
    void reset();  // 重置PID状态
};

// 增量式 PID 控制器
struct IncrementalPIDController {
    float Kp = 20;          // 比例系数
    float Ki =5;          // 比例系数
    float Kd;          // 微分系数
    float lastError;   // 上一次的误差
    float output;      // 输出值

    // 计算增量式 PID 输出
    float calculate(float currentValue, float setPoint);

    // 重置增量式 PID 控制器
    void reset();
};

#endif // PID_CONTROLLER_H 